package br.com.mftc.efitness.converters;

import java.util.Map;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import br.com.mftc.efitness.basicas.Cidade;

@FacesConverter(value = "converterCidade", forClass = Cidade.class)
public class ConverterCidade implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		if (value != null) {
            return getAttributesFrom(component).get(value);
        } else {
        	return null;
        }
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if (value != null) {
            Cidade cidade = (Cidade) value;
            
            addAttribute(component, cidade);
            return cidade.getNome();
        } else {
        	return null;
        }
	}
	
	private void addAttribute(UIComponent component, Cidade cidade) {
        this.getAttributesFrom(component).put(cidade.getNome(), cidade);
    }
	
	private Map<String, Object> getAttributesFrom(UIComponent component) {
        return component.getAttributes();
    }
}
